<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>164构造函数</title>
</head>

<body>
  <h1>164构造函数</h1>
  <script>
    /* 
      一、构造函数？
        1 概念
          是一种特殊的函数，主要用来初始化对象。

          可以快速批量创建多个类似的对象。

          定义构造函数时，约定首字母需要大写，且只能由new操作符调用。

        2 相关知识
          new调用构造函数的过程称为实例化。

          new调用构造函数时如果没有携带参数，则构造函数后面的()可以省略。

          如果一个函数被作为构造函数使用，则无需显示的写return，因为实例化时返回值默认是实例化对象。

          即使在构造函数中显示的手动写return，也是无效的。

          构造函数中的this指向实例化对象。

          之前new Object(), new Date()就是构造函数的实例化过程。
    */
    function Animal(name, age) {
      this.name = name
      this.age = age
    }
    let c = new Animal('cat', 2)
    let d = new Animal('dog', 3)
    let e = new Animal

    console.log(c, d, e)

    // 练习
    function Goods(name, price, count) {
      this.name = name,
        this.price = price,
        this.count = count
    }
    let xiaomi = new Goods('xiaomi', 1, 1)
    let huawei = new Goods('huawei', 2, 2)
    let vivo = new Goods('vivo', 3, 3)
    console.log(xiaomi, huawei, vivo)

    let t = new Date('2024-11-27')
    console.log(t)
    console.log(typeof t)
  </script>
</body>

</html>